home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / u_man / cat1 / pca.z / pca
Encoding:
Text File  |  2002-10-03  |  46.7 KB  |  886 lines

  1. PCA(1)                                                 Last changed: 3-5-99
  2.  
  3.  
  4. NNAAMMEE
  5.      ppccaa - Power C Analyzer
  6.  
  7. SSYYNNOOPPSSIISS
  8.      //uussrr//lliibb//ppccaa [ _o_p_t_i_o_n_s ] ...
  9.      //uussrr//lliibb6644//ccmmppllrrss//ppccaa [ _o_p_t_i_o_n_s ] ...
  10.  
  11. IIMMPPLLEEMMEENNTTAATTIIOONN
  12.      IRIX systems (--oo3322 ABI only)
  13.  
  14. DDEESSCCRRIIPPTTIIOONN
  15.      For --nn3322 and --6644 ABIs, ppccaa has been replaced by the --aappoo option.
  16.  
  17.      ppccaa is a source-to-source optimizing C preprocessor that discovers
  18.      parallelism in C code.  ppccaa concurrentizes C by restructuring certain
  19.      portions of code and then adding parallel programming directives where
  20.      possible.  The amount of code that is concurrentized varies depending
  21.      on the value of certain ppccaa command line options, directives, and
  22.      assertions.  For more information, refer to the _I_R_I_S _P_o_w_e_r _C _U_s_e_r'_s
  23.      _G_u_i_d_e.
  24.  
  25.      ppccaa is usually invoked as an option to the cccc(1) command, although it
  26.      can be run separately.  When ppccaa is used as part of a cccc compilation,
  27.      the ppccaa _o_p_t_i_o_ns must be passed via the --WWKK mechanism.  See the cccc(1)
  28.      man page for details of the --WW option.
  29.  
  30.      ppccaa requires a single input source file, which can be specified using
  31.      the --ii option.  Specifying a filename as a command-line argument is
  32.      also sufficient, as any argument not recognized as an option is
  33.      treated as an input filename.
  34.  
  35.      ppccaa can produce two types of output.  The first type is the
  36.      concurrentized C source code, and the second type is the annotated
  37.      listing, whose contents vary depending on the value of the --lloo command
  38.      line option.  Filenames for these two types of output can be set using
  39.      the --ccmmpp and --ll options, respectively.  If the --ccmmpp option is not
  40.      specified, the output code will be sent to standard output.  If no --ll
  41.      option is specified, and some type of listing information is requested
  42.      using the --lloo option, then this listing information will also be sent
  43.      to standard output.
  44.  
  45.      ppccaa accepts the following command line options:
  46.  
  47.      --aarrll==<_i_n_t_e_g_e_r>
  48.                Long name:  --aaddddrreessss__rreessoolluuttiioonn__lleevveell==<_i_n_t_e_g_e_r>
  49.                Default value:  --aaddddrreessss__rreessoolluuttiioonn__lleevveell==11
  50.  
  51.                The --aarrll option controls the assumptions ppccaa makes about
  52.                memory aliases.  The integer value, which ranges from 0 (no
  53.                assumptions) to 4 (assume everything), specifies the level
  54.                of assumptions that ppccaa is to make about the behavior of the
  55.                code.  Each level is cumulative (i.e., level 4 also makes
  56.                all the assumptions of the lower levels).
  57.  
  58.                The following are the assumption level definitions:
  59.  
  60.  
  61.                00    No assumptions are made.
  62.  
  63.                11    Assumes that no pointer self references.
  64.  
  65.                22    Assumes that function arguments are distinct from each
  66.                     other.
  67.  
  68.                33    Assumes that local pointers and arrays are distinct
  69.                     from global pointers and arrays.
  70.  
  71.                44    Assumes that all pointers and arrays are distinct from
  72.                     each other.
  73.  
  74.      --aarrccllmm==<_i_n_t_e_g_e_r>
  75.                Long name:  --aarrcclliimmiitt==<_i_n_t_e_g_e_r>
  76.                Default value:  --aarrcclliimmiitt==55000000
  77.  
  78.                The --aarrcclliimmiitt option sets the size of the dependence arc
  79.                data structure that ppccaa uses to perform data dependence
  80.                analysis.  This data structure is dynamically allocated on a
  81.                loop nest by loop nest basis.  By default, this data
  82.                structure is allocated with a size = max (# of statements *
  83.                4, --aarrcclliimmiitt value).  If a loop contains too many dependence
  84.                relationships and cannot be represented in the dependence
  85.                data structure, ppccaa will surrender optimization of the loop.
  86.  
  87.                You may use the --aarrcclliimmiitt option to increase the size of the
  88.                data structure to enable ppccaa to perform more optimizations.
  89.                (Most users do NOT need to change this value.)
  90.  
  91.      --cchhll==<_i_n_t_e_g_e_r>
  92.                Long name:  --ccaacchheelliinnee==<_i_n_t_e_g_e_r>
  93.                Default value:  --ccaacchheelliinnee==6644
  94.  
  95.                The --ccaacchheelliinnee option informs ppccaa of the width of the memory
  96.                channel (in bytes) between cache and main memory.
  97.  
  98.      --cchhss==<_i_n_t_e_g_e_r>
  99.                Long name:  --ccaacchheessiizzee==<_i_n_t_e_g_e_r>
  100.                Default value:  --ccaacchheessiizzee==6644
  101.  
  102.                The --ccaacchheessiizzee option informs ppccaa of the size (in kilobytes)
  103.                of the cache memory.
  104.  
  105.      --ccppllcc==<_i_n_t_e_g_e_r>[,<_i_n_t_e_g_e_r>]
  106.                Long name:  --ccaacchhee__pprreeffeettcchh__lliinnee__ccoouunntt==<_i_n_t_e_g_e_r>[,<_i_n_t_e_g_e_r>]
  107.                Default value:  --ccaacchhee__pprreeffeettcchh__lliinnee__ccoouunntt==00
  108.  
  109.                The --ccppllcc option informs ppccaa of the number of additional
  110.                cache lines that are fetched during a cache miss.  The first
  111.                number corresponds to the primary cache, and the second
  112.                number, if specified, corresponds to the secondary cache.
  113.  
  114.      --[[nn]]ccmmpp[[==<_f_i_l_e>]
  115.                Long name:  --[[nnoo]]ccmmpp[[==<_f_i_l_e>]
  116.                Default value:  ssttaannddaarrdd oouuttppuutt
  117.  
  118.                The --ccmmpp (compilable) option instructs ppccaa to place the
  119.                optimized C program in a specified transformed program file.
  120.                If --ccmmpp==<_f_i_l_e> is specified, the transformed C is written to
  121.                that file.  If --ccmmpp is specified, the transformed code is
  122.                written to _f_i_l_e_n_a_m_e..mm, where _f_i_l_e_n_a_m_e is the input file name
  123.                with any trailing ..cc removed.  If no --ccmmpp option is
  124.                specified, the transformed code is written to standard
  125.                output.
  126.  
  127.                To disable generation of the C output file, specify --nnooccmmpp
  128.                on the command line.
  129.  
  130.      --[[nn]]ccoonncc
  131.                Long name:  --[[nnoo]]ccoonnccuurrrreennttiizzee
  132.                Default value:  --ccoonnccuurrrreennttiizzee
  133.  
  134.                This command line option directs ppccaa to perform
  135.                concurrentization, while --nnooccoonncc directs ppccaa to perform only
  136.                scalar optimizations.
  137.  
  138.      --[[nn]]ccpp==<_l_i_s_t>
  139.                Long name:  --[[nnoo]]ccmmppooppttiioonnss==<_l_i_s_t>
  140.                Default value:  --nnooccmmppooppttiioonnss
  141.  
  142.                The --ccmmppooppttiioonnss option specifies additional information for
  143.                inclusion in the transformed code file.
  144.  
  145.                The following option can be specified:
  146.  
  147.  
  148.                ii    Insert line numbers that reference the original source.
  149.  
  150.      --ddoollllaarr
  151.                No short name.
  152.                Default value:  ooffff
  153.  
  154.                The --ddoollllaarr option allows dollar signs to be used in
  155.                identifiers under both Kernighan and Ritchie and ANSI C.
  156.  
  157.      --ddpprr==<_i_n_t_e_g_e_r>
  158.                Long name:  --ddpprreeggiisstteerrss==<_i_n_t_e_g_e_r>
  159.                Default value:  --ddpprreeggiisstteerrss==1122
  160.  
  161.                The --ddpprreeggiisstteerrss option specifies the number of double
  162.                precision floating point registers each processor has
  163.                available for expression evaluation.
  164.  
  165.      --eeiiiiffgg==<_i_n_t_e_g_e_r>
  166.                Long name:  --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh==<_i_n_t_e_g_e_r>
  167.                Default value:  --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh==2200
  168.  
  169.                The --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh option controls the rewriting
  170.                of iiffs nested within loops.  The value of the option (which
  171.                must be in the range 0 to 100) specifies a limit on the
  172.                number of executable statements in the nested iiff.  If the
  173.                number of statements in the iiff exceeds this limit, then ppccaa
  174.                will not rewrite the code.  If there are fewer statements,
  175.                then ppccaa will interchange the loop and if statements for
  176.                improved execution speed.
  177.  
  178.      --ffllooaatt
  179.                No short name.
  180.                Default value:  ooffff
  181.  
  182.                In Kernighan and Ritchie C, all variables declared as type
  183.                ffllooaatt are promoted to type ddoouubbllee by default.  The --ffllooaatt
  184.                option prevents this promotion to double.  This option is
  185.                ignored under --ssyynnttaaxx==aa, because ANSI C does not promote
  186.                variables of type ffllooaatt to ddoouubbllee.
  187.  
  188.      --ffpprr==<_i_n_t_e_g_e_r>
  189.                Long name:  --ffpprreeggiisstteerrss==<_i_n_t_e_g_e_r>
  190.                Default value:  --ffpprreeggiisstteerrss==1122
  191.  
  192.                The --ffpprreeggiisstteerrss option specifies the number of single
  193.                precision floating point registers each processor has
  194.                available for expression evaluation.
  195.  
  196.      --[[nn]]ffuussee
  197.                Long name:  --[[nnoo]]ffuussee
  198.                Default value:  --ffuussee
  199.  
  200.                This command line option enables lloooopp ffuussiioonn, a conventional
  201.                compiler optimization that transforms two adjacent loops
  202.                into a single loop.
  203.  
  204.                Setting --ssccaallaarroopptt to at least 2, --ooppttiimmiizzee==55 is also
  205.                required to enable loop fusion.
  206.  
  207.      --hheeaapp==<_l_i_s_t>
  208.                Long name:  --hheeaapplliimmiitt==<_i_n_t_e_g_e_r>
  209.                Default value:  --hheeaapplliimmiitt==110000
  210.  
  211.                The --hheeaapplliimmiitt option specifies the maximum size in
  212.                megabytes to which the memory heap is allowed to grow to
  213.                when ppccaa processes a source file.  If this limit is reached,
  214.                ppccaa will stop processing the source code.
  215.  
  216.      --hhllii==<_l_i_s_t>
  217.                Long name:  --hhooiisstt__lloooopp__iinnvvaarriiaannttss==<_i_n_t_e_g_e_r>
  218.                Default value:  --hhooiisstt__lloooopp__iinnvvaarriiaannttss==11
  219.  
  220.                This option controls code hoisting of loop-invariant
  221.                expressions from loops.  Note that this switch is
  222.                independent of the switches that control the floating of
  223.                invariant-IFs out of loops, --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh and
  224.                --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh.  This option accepts the following
  225.                settings:
  226.  
  227.  
  228.                00    Turns off the hoisting of invariant code from loops.
  229.  
  230.                11    Floats all loop invariant expressions that are not
  231.                     under the control of an IF-structure within the given
  232.                     loop nest.  This is the default setting.
  233.  
  234.                22    The same behavior as level 1.
  235.  
  236.                33    Floats all loop-invariant expressions from loops.
  237.  
  238.                     If there is invariant code that is protected by an IF-
  239.                     structure and the hoisting value is less than 3, then
  240.                     ppccaa will generate a message to that effect in your
  241.                     output listing.
  242.  
  243.      --ii==<_f_i_l_e> Long name:  --iinnppuutt==<_f_i_l_e>
  244.                Default value:  nnoonnee
  245.  
  246.                The --ii option instructs ppccaa to read its input code from the
  247.                specified file.
  248.  
  249.      --iinnll==<_l_i_s_t>
  250.                Long name:  --iinnlliinnee==<_l_i_s_t>
  251.                Default value:  ooffff
  252.  
  253.      --iinnllcc==<_l_i_s_t>
  254.                Long name:  --iinnlliinnee__aanndd__ccooppyy==<_l_i_s_t>
  255.                Default value:  ooffff
  256.  
  257.      --iippaa==<_l_i_s_t>
  258.                Long name:  --iippaa==<_l_i_s_t>
  259.                Default value:  ooffff
  260.  
  261.                The --iinnlliinnee, --iinnlliinnee__aanndd__ccooppyy, and --iippaa options provide ppccaa
  262.                with a list of routines to analyze.  If the option is
  263.                specified without an argument list, ppccaa will try to
  264.                inline/analyze all the called functions in the _i_n_l_i_n_i_n_g
  265.                _u_n_i_v_e_r_s_e (specified by the --iinnlliinnee__ffrroomm__ffiilleess,
  266.                --iinnlliinnee__ffrroomm__lliibbrraarriieess, --iippaa__ffrroomm__ffiilleess, or
  267.                --iippaa__ffrroomm__lliibbrraarriieess options).  If a list of names is
  268.                included, for example, --iinnlliinnee==mmkkccooeeff,,yyvvaall, then just the
  269.                routines named will be inlined/analyzed.
  270.  
  271.                The --iinnlliinnee and --iippaa command line options are overridden by
  272.                the ##pprraaggmmaa iinnlliinnee and ##pprraaggmmaa iippaa directives.
  273.  
  274.                The --iinnlliinnee__aanndd__ccooppyy option functions like the --iinnlliinnee
  275.                option, except that if all references to a function are
  276.                inlined, the text of the routine is not optimized, but is
  277.                copied unchanged to the transformed code file.  This is
  278.                intended for use when inlining routines from the same file
  279.                as the call, and has no special effect when the routines
  280.                being inlined are being taken from a library or another
  281.                source file.
  282.  
  283.                When a subprogram has been inlined everywhere it is used,
  284.                leaving it unoptimized saves compilation time.  When a
  285.                program involves multiple source files, the unoptimized
  286.                routine will still be available in case one of the other
  287.                source files contains a reference to it, so no errors will
  288.                result.
  289.  
  290.                NOTE: the iinnlliinnee__aanndd__ccooppyy algorithm assumes that all calls
  291.                and references to the routine precede it in the source file.
  292.                If the routine is referenced after the text of the routine,
  293.                and that particular call site cannot be inlined, the
  294.                unoptimized version of the routine will be invoked.
  295.  
  296.      --iinnccrr==<_f_i_l_e>
  297.                Long name:  --iinnlliinnee__ccrreeaattee==<_f_i_l_e>
  298.                Default value:  ooffff
  299.  
  300.      --iippaaccrr==<_f_i_l_e>
  301.                Long name:  --iippaa__ccrreeaattee==<_f_i_l_e>
  302.                Default value:  ooffff
  303.  
  304.                These options instruct ppccaa to build a library file
  305.                containing partially-analyzed routines for later
  306.                inlining/analyzing.  The library created is used with the
  307.                --iinnlliinnee__ffrroomm__lliibbrraarriieess or --iippaa__ffrroomm__lliibbrraarriieess option.
  308.                Libraries created with --iinnlliinnee__ccrreeaattee can be used with
  309.                either inlining or interprocedural analysis, since they
  310.                contain essentially complete descriptions of the functions
  311.                included.  Libraries created with --iippaa__ccrreeaattee can be used
  312.                only with interprocedural analysis, since they do not have
  313.                the complete text of the functions, just the data
  314.                relationships information.
  315.  
  316.                Any filename can be used for the library name.  An extension
  317.                ..kklliibb is preferred, for maximum compatibility with the
  318.                --iinnlliinnee__ffrroomm__lliibbrraarriieess and --iippaa__ffrroomm__lliibbrraarriieess options.
  319.  
  320.      --iinndd==<_i_n_t_e_g_e_r>
  321.                Long name:  --iinnlliinnee__ddeepptthh==<_i_n_t_e_g_e_r>
  322.                Default value:  --iinnlliinnee__ddeepptthh==22
  323.  
  324.                This option sets the maximum level of subprogram nesting
  325.                that ppccaa will attempt to inline.  Higher values instruct ppccaa
  326.                to trace function calls further and thus produce more
  327.                inlined code.
  328.  
  329.                The ##pprraaggmmaa [[nnoo]]iinnlliinnee directive, when enabled, is not
  330.                affected by the --iinnlliinnee__ddeepptthh restrictions.
  331.  
  332.                The argument values and their meanings are:
  333.  
  334.  
  335.                --11   Inline only routines that do not contain procedure or
  336.                     function calls.
  337.  
  338.                00    Use the default value (2).
  339.  
  340.                11--1100 Inline routines to this depth.
  341.  
  342.      --iinnffff==<_l_i_s_t>
  343.                Long name:  --iinnlliinnee__ffrroomm__ffiilleess==<_l_i_s_t>
  344.                Default value:  ccuurrrreenntt ssoouurrccee ffiillee
  345.  
  346.      --iinnffll==<_l_i_s_t>
  347.                Long name:  --iinnlliinnee__ffrroomm__lliibbrraarriieess==<_l_i_s_t>
  348.                Default value:  ooffff
  349.  
  350.      --iippaaffff==<_l_i_s_t>
  351.                Long name:  --iippaa__ffrroomm__ffiilleess==<_l_i_s_t>
  352.                Default value:  ccuurrrreenntt ssoouurrccee ffiillee
  353.  
  354.      --iippaaffll==<_l_i_s_t>
  355.                Long name:  --iippaa__ffrroomm__lliibbrraarriieess==<_l_i_s_t>
  356.                Default value:  ooffff
  357.  
  358.                These options provide ppccaa with the locations of functions
  359.                available for inlining/interprocedural analysis.  (The total
  360.                set of available functions is called the inlining (or IPA)
  361.                universe.)
  362.  
  363.                The --iinnlliinnee__ffrroomm__ffiilleess and --iippaa__ffrroomm ffiilleess options take the
  364.                names of source files and directories containing source
  365.                files.  Including a directory, for example,
  366.                --iippaaffff==//uussrr//iippaalliibb, is equivalent to the UNIX notation
  367.                //uussrr//iippaalliibb//**..cc.  (Do not use shell wild card characters in
  368.                the list of files and directories.)  Note that the specified
  369.                files must have already been pre-processed by ccpppp or aaccpppp
  370.                (if necessary).
  371.  
  372.                The --iinnlliinnee__ffrroomm__lliibbrraarriieess and --iippaa__ffrroomm__lliibbrraarriieess options
  373.                take the names of libraries created with the --iinnlliinnee__ccrreeaattee
  374.                and --iippaa__ccrreeaattee options and directories containing such
  375.                libraries.  In directories, the ppccaa libraries are identified
  376.                by the extension ..kklliibb.
  377.  
  378.                Multiple files/libraries or directories may be specified in
  379.                one option, separated by commas.  Multiple occurrences of
  380.                these options may be specified on the command line.
  381.  
  382.      --iinnllll==<_i_n_t_e_g_e_r>
  383.                Long name:  --iinnlliinnee__lloooopplleevveell==<_i_n_t_e_g_e_r>
  384.                Default value:  --iinnllll==22
  385.  
  386.      --iippaallll==<_i_n_t_e_g_e_r>
  387.                Long name:  --iippaa__lloooopplleevveell==<_i_n_t_e_g_e_r>
  388.                Default value:  --iippaallll==22
  389.  
  390.                The --iinnlliinnee__lloooopplleevveell and --iippaa__lloooopplleevveell options enable the
  391.                user to limit inlining to just functions which are
  392.                referenced in nested loops, where the effects of reduced
  393.                function call overhead or enhanced optimizations will be
  394.                multiplied.
  395.  
  396.                The parameter is defined from the most deeply nested
  397.                function reference.  --iinnllll==11 restricts inlining to functions
  398.                referenced in the deepest loop nest.  --iinnllll==33 restricts
  399.                inlining to those routines referenced at the three deepest
  400.                levels.  The ffoorr loop nest level of each function reference
  401.                is included in the optional calling tree section of the
  402.                listing files.
  403.  
  404.                The ##pprraaggmmaa [[nnoo]]iinnlliinnee and ##pprraaggmmaa [[nnoo]]iippaa directives, when
  405.                enabled, are not affected by the --iinnlliinnee__lloooopplleevveell and
  406.                --iippaa__lloooopplleevveell restrictions.
  407.  
  408.      --iinnmm      Long name:  --iinnlliinnee__mmaannuuaall
  409.                Default value:  ooffff
  410.  
  411.      --iippaamm     Long name:  --iippaa__mmaannuuaall
  412.                Default value:  ooffff
  413.  
  414.                These options instruct ppccaa to recognize the ##pprraaggmmaa
  415.                [[nnoo]]iinnlliinnee and ##pprraaggmmaa [[nnoo]]iippaa directives.  This allows
  416.                manual control over which functions are inlined/analyzed at
  417.                which call sites.
  418.  
  419.                The default is to ignore these ##pprraaggmmaa directives.  When
  420.                --iinnlliinnee__mmaann or --iippaa__mmaann is included on the command line, the
  421.                ##pprraaggmmaa directives are enabled.  Because ##pprraaggmmaa [[nnoo]]iinnlliinnee
  422.                and ##pprraaggmmaa [[nnoo]]iippaa are not affected by the
  423.                --iinnlliinnee__lloooopplleevveell and --iippaa__lloooopplleevveell command line options,
  424.                they can be used with command line control to select
  425.                functions or call sites that the regular selection algorithm
  426.                would reject.
  427.  
  428.      --llmm==<_i_n_t_e_g_e_r>
  429.                Long name:  --lliimmiitt==<_i_n_t_e_g_e_r>
  430.                Default value:  --lliimmiitt==55000000
  431.  
  432.                To reduce the compile time, ppccaa estimates how long it takes
  433.                to analyze each loop nest construct.  If a loop is too
  434.                deeply nested, ppccaa ignores the outer loop and recursively
  435.                visits the inner loops.  The loop nest limit can be used to
  436.                control what ppccaa considers too deeply nested.  For more
  437.                information, refer to the _I_R_I_S _P_o_w_e_r _C _U_s_e_r'_s _G_u_i_d_e.
  438.  
  439.      --llnn==<_i_n_t_e_g_e_r>
  440.                Long name:  --lliinneess==<_i_n_t_e_g_e_r>
  441.                Default value:  --lliinneess==5555
  442.  
  443.                This option enables the ppccaa listing to be paginated for
  444.                printing.  The number of lines per page on the listing may
  445.                be changed by using the --lliinneess option.  The --lliinneess==00 option
  446.                directs ppccaa to paginate only at subroutine boundaries.
  447.  
  448.      --[[nn]]ll[[==<_f_i_l_e>]]
  449.                Long name:  --[[nnoo]]lliisstt[[==<_f_i_l_e>]]
  450.                Default value:  ssttaannddaarrdd oouuttppuutt
  451.  
  452.                If some type of listing information is requested using the
  453.                --lloo option, the --lliisstt option specifies the destination of
  454.                that listing.  If --lliisstt==<_f_i_l_e> is specified, the listing is
  455.                written to the specified file.  If --lliisstt is specified
  456.                without a filename, the listing file is written to
  457.                _f_i_l_e_n_a_m_e..llsstt, where _f_i_l_e_n_a_m_e is the input file name with any
  458.                trailing ..cc removed.  If no --lliisstt option is specified, any
  459.                listing information requested is written to the standard
  460.                output.  To disable generation of any listing information,
  461.                enter --nnoolliisstt on the command line.
  462.  
  463.      --lloo==<_l_i_s_t>
  464.                Long name:  --lliissttooppttiioonnss==<_l_i_s_t>
  465.                Default value:  nnoo lliissttiinngg
  466.  
  467.                The --lliissttooppttiioonnss option tells ppccaa what information to
  468.                include in the listing file.
  469.  
  470.                --lliissttooppttiioonnss can enable the following options to be included
  471.                in the listing:
  472.  
  473.  
  474.                cc    Calling tree.
  475.  
  476.                kk    Print ppccaa options active within the program unit.
  477.  
  478.                ll    Loop-by-loop optimization table.
  479.  
  480.                nn    Program unit names as processed (written to error
  481.                     file).
  482.  
  483.                pp    Compilation performance statistics.
  484.  
  485.                ss    Summary of the optimizations performed.
  486.  
  487.      --llww==<_i_n_t_e_g_e_r>
  488.                Long name:  --lliissttiinnggwwiiddtthh==<_i_n_t_e_g_e_r>
  489.                Default value:  --lliissttiinnggwwiiddtthh==8800
  490.  
  491.                This option sets the maximum line length for the listing
  492.                file.  This setting affects only the format of the loop
  493.                summary table (--lloo==ll) and the options table (--lloo==kk).  The
  494.                only permissible values for --lliissttiinnggwwiiddtthh are 80 and 132.
  495.  
  496.      --[[nn]]mmaa==<_l_i_s_t>
  497.                Long name:  --[[nnoo]]mmaacchhiinnee==<_l_i_s_t>
  498.                Default value:  --mmaacchhiinnee==ss
  499.  
  500.                The --mmaacchhiinnee option is list-valued with three choices which
  501.                may be set.  The possible choices are:
  502.  
  503.  
  504.                nn    Tells ppccaa to concurrentize loops which generate non-
  505.                     stride-1 memory references.
  506.  
  507.                oo    Tells ppccaa to only concurrentize outer loops.  This
  508.                     capability is available to prevent concurrentization on
  509.                     applications that have small inner loop bounds, thereby
  510.                     reducing overhead costs.  ppccaa determines
  511.                     concurrentization based on the overhead to benefit
  512.                     ratio.  When the loop bounds are unknown at compile
  513.                     time, ppccaa may generate concurrent code for innermost
  514.                     loops, a practice that may be inefficient for the
  515.                     actual loop bounds.
  516.  
  517.                ss    Tells ppccaa to concurrentize ffoorr loops which generate
  518.                     stride-1 memory references.
  519.  
  520.                     The ss and nn choices may not be set simultaneously.
  521.  
  522.      --mmiiiiffgg==<_i_n_t_e_g_e_r>
  523.                Long name:  --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh==<_i_n_t_e_g_e_r>
  524.                Default value:  --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh==550000
  525.  
  526.                The --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh option controls the rewriting
  527.                of iiff statements nested within loops.  The value of the
  528.                option (which must be in the range 0 to 1000) specifies a
  529.                limit on the total number of additional executable
  530.                statements which can be generated by this optimization.  If
  531.                the total number of extra statements generated exceeds this
  532.                limit, then ppccaa will stop rewriting the code.  If there are
  533.                fewer statements, then ppccaa will continue to interchange the
  534.                loop and iiff statements for improved execution speed.
  535.  
  536.      --mmcc==<_i_n_t_e_g_e_r>
  537.                Long name:  --mmiinnccoonnccuurrrreenntt==<_i_n_t_e_g_e_r>
  538.                Default value:  --mmiinnccoonnccuurrrreenntt==11000000
  539.  
  540.                The --mmiinnccoonnccuurrrreenntt option sets the minimum level of work
  541.                which must be done by a loop in order for it to be a
  542.                candidate for concurrentization.  Loops that contain less
  543.                work than --mmiinnccoonnccuurrrreenntt will not be concurrentized.
  544.                Setting --mmiinnccoonnccuurrrreenntt==00 effectively allows all loops (if
  545.                all other necessary conditions are met) to be
  546.                concurrentized.
  547.  
  548.      --[[nn]]nnaammeeppaarrtt[[==<_i_n_t_e_g_e_r>,<_i_n_t_e_g_e_r>]]
  549.                Long name:  --[[nnoo]]nnaammeeppaarrttiittiioonniinngg[[==<_i_n_t_e_g_e_r>,<_i_n_t_e_g_e_r>]]
  550.                Default value:  --nnoonnaammeeppaarrttiittiioonniinngg
  551.  
  552.                This option looks at distinct array names and limits the
  553.                number of arrays that that are referenced within a loop in
  554.                order to avoid cache conflicts among them.  For example,
  555.                --nnaammeeppaarrtt can be used to break a loop that contains
  556.                references to arrays aa and bb into two loops, one referencing
  557.                array aa and the other referencing array bb.  The two integer
  558.                arguments specify the preferred minimum and maximum numbers
  559.                of distinct arrays referenced in each distributed loop.  If
  560.                they are not specified, they default to 2 and 6.  The
  561.                --nnnnaammeeppaarrtt option turns off name partitioning.
  562.  
  563.                --ssccaallaarroopptt must be set to at least 3 for nnaammeeppaarrttiittiioonniinngg to
  564.                work.
  565.  
  566.      --oo==<_i_n_t_e_g_e_r>
  567.                Long name:  --ooppttiimmiizzee==<_i_n_t_e_g_e_r>
  568.                Default value:  --ooppttiimmiizzee==55
  569.  
  570.                The --ooppttiimmiizzee option sets the optimization level.  Each
  571.                optimization level is cumulative (i.e., level 5 performs
  572.                everything up to and including this level).
  573.  
  574.                The meaning of the optimization levels are as follows:
  575.  
  576.  
  577.                00    No optimization is done.
  578.  
  579.                11    Only simple optimizations are done.  Induction variable
  580.                     recognition is enabled.
  581.  
  582.                22    Recognizes reductions in concurrent loops.  Performs
  583.                     lifetime analysis to determine when last-value
  584.                     assignment of scalars is necessary.  Performs more
  585.                     powerful data dependence tests to find parallelism.
  586.  
  587.                33    Special techniques are used to break data dependence
  588.                     cycles that otherwise prevent concurrentization.
  589.                     Triangular loops are recognized and loop interchanging
  590.                     will be attempted to improve memory referencing.
  591.                     Special case data dependence tests are used.  Special
  592.                     index sets, called wrap-around variables, are also
  593.                     recognized.
  594.  
  595.                44    Two versions of a loop are generated, if necessary, to
  596.                     break a data dependence arc.  Exact data dependence
  597.                     tests are used to allow more parallelism to be
  598.                     discovered.
  599.  
  600.                55    Array expansion and loop fusion are enabled.
  601.  
  602.      --rr==<_i_n_t_e_g_e_r>
  603.                Long name:  --rroouunnddooffff==<_i_n_t_e_g_e_r>
  604.                Default value:  --rroouunnddooffff==00
  605.  
  606.                The --rroouunnddooffff option allows the user to specify the change
  607.                from serial roundoff error that is tolerable.  If an
  608.                arithmetic reduction is accumulated in a different order
  609.                than in the scalar program, the roundoff error is
  610.                accumulated differently and the final result may differ from
  611.                that of the original program's output.  Although the
  612.                difference is usually insignificant, certain restructuring
  613.                transformations performed by ppccaa must be disabled to obtain
  614.                exactly the same answers as the scalar program.
  615.  
  616.                ppccaa classifies its transformations by the amount of
  617.                difference in roundoff error that can accumulate so the user
  618.                can decide what level of roundoff error differences is
  619.                allowable.
  620.  
  621.                The meanings of the switch values are as follows:
  622.  
  623.  
  624.                00    Allow no roundoff-changing transformations.  Arithmetic
  625.                     recurrences and reductions are not concurrentized.
  626.                     Non-arithmetic reductions may still be concurrentized.
  627.                     Thus, the answers do not depend on the number of
  628.                     processors used.
  629.  
  630.                11    Enable expression simplification which might generate
  631.                     overflow or underflow errors differently.  Enable
  632.                     simplification of expressions with operands between
  633.                     binary and unary operators.  Perform expression
  634.                     simplification which is exposed due to forward
  635.                     substitution.  Enable code floating if the
  636.                     --ssccaallaarrooppttiimmiizzee option is greater than or equal to 1.
  637.  
  638.                22    Allow loop interchanging around arithmetic reductions
  639.                     to be recognized.  Perform concurrent reductions with
  640.                     pre-scheduled concurrent loops and local accumulation
  641.                     of reduction results.
  642.  
  643.                33    Recognize real (float) induction variables.  Enable sum
  644.                     reductions.  Enable memory management optimizations if
  645.                     ssccaallaarrooppttiimmiizzee=3.
  646.  
  647.      --rroouuttiinnee==<_r_o_u_t_i_n_e>[[,,<_r_o_u_t_i_n_e>......]] --sskkiipp
  648.  
  649.                This option pair allows the user to request that ppccaa perform
  650.                no optimization on the specified routines.  The code in
  651.                these routines will be written unchanged to the output file.
  652.  
  653.      --ssiiggnneedd
  654.                No short name.
  655.                Default value:  ooffff
  656.  
  657.                By default, a variable declared as cchhaarr is handled as an
  658.                uunnssiiggnneedd cchhaarr.  The --ssiiggnneedd option causes a variable
  659.                declared as cchhaarr to be handled as ssiiggnneedd cchhaarr.  This option
  660.                is necessary when porting code from platforms that have a C
  661.                compiler that defaults cchhaarr to ssiiggnneedd cchhaarr.
  662.  
  663.      --ssoo==<_i_n_t_e_g_e_r>
  664.                Long name:  --ssccaallaarrooppttiimmiizzee==<_i_n_t_e_g_e_r>
  665.                Default value:  --ssccaallaarrooppttiimmiizzee==33
  666.  
  667.                The --ssccaallaarrooppttiimmiizzee option sets the level of dusty-deck and
  668.                other serial transformations performed.
  669.  
  670.                The following are the possible values for <_i_n_t_e_g_e_r>:
  671.  
  672.  
  673.                00    No scalar optimizations are performed.
  674.  
  675.                11    Only simple scalar optimizations are performed - dead
  676.                     code elimination, global forward substitution and
  677.                     dusty-deck IF transformations.
  678.  
  679.                22    Full range of scalar optimizations are performed -
  680.                     invariant IF's are floated out of loops, loop
  681.                     rerolling/unrolling, array expansion, loop fusion, loop
  682.                     peeling and induction variable recognition.
  683.  
  684.                33    Memory management optimizations are enabled if
  685.                     rroouunnddooffff=3.
  686.  
  687.                44    Reruns dead code elimination optimization after other
  688.                     optimizations.  Sometimes the other optimizations
  689.                     expose more dead code which can be removed.
  690.  
  691.      --ssaasscc==<_i_n_t_e_g_e_r>
  692.                Long name:  --sseettaassssoocciiaattiivviittyy==<_i_n_t_e_g_e_r>
  693.                Default value:  --sseettaassssoocciiaattiivviittyy==11
  694.  
  695.                The --sseettaassssoocciiaattiivviittyy option provides information on the
  696.                mapping of physical addresses in main memory to cache pages.
  697.                The default value (1) allows a datum in main memory to be
  698.                placed in any of four places in cache.
  699.  
  700.      --sspprr==<_i_n_t_e_g_e_r>
  701.                Long name:  --sspprreeggiisstteerrss==<_i_n_t_e_g_e_r>
  702.                Default value:  --sspprreeggiisstteerrss==1122
  703.  
  704.                The --sspprreeggiisstteerrss option specifies the number of single
  705.                precision floating point registers each processor has
  706.                available for expression evaluation.
  707.  
  708.      --ssttddiioo
  709.                No short name.
  710.                Default value:  ooffff
  711.  
  712.                The --ssttddiioo option instructs ppccaa to perform strength
  713.                reduction on calls to certain functions in the standard I/O
  714.                library.  Programs that use functions such as pprriinnttff or
  715.                ssccaannff heavily will generally have improved I/O performance
  716.                when this switch is used.  The --ssccaallaarrooppttiimmiizzee=3 option is
  717.                required to enable these transformations.
  718.  
  719.                Use of this option may produce code containing calls to
  720.                functions defined in lliibbkkaappiioo..aa, a library of optimized
  721.                low-level I/O routines.  As a result, when linking your
  722.                program using cccc(1) or lldd(1), you may have to include this
  723.                library, using the command-line option --llkkaappiioo.  If you use
  724.                cccc(1) with a --ppccaa option to link your program, this is done
  725.                automatically.
  726.  
  727.                If you explicitly specify that I/O using ssccaannff or ffssccaannff be
  728.                done in parallel (for example, by using the ##pprraaggmmaa
  729.                ccoonnccuurrrreenntt ccaallll directive), using --ssttddiioo might cause your
  730.                program to yield incorrect results.  To determine if your
  731.                program might have this problem, search the ppccaa output code
  732.                (if you are using cccc(1), use the --ppccaa kkeeeepp option to put the
  733.                output code in a ..MM file) for the functions ____KKIIOOrrdd,
  734.                ____KKIIOOrrff, and ____KKIIOOrrii.  If you find these functions (from
  735.                optimized calls to ssccaannff or ffssccaannff on doubles, floats, and
  736.                integers, respectively), the I/O read operations involved
  737.                will not be semaphored properly.  This is only a problem if
  738.                they occur in a parallel region, and operate on files that
  739.                other threads may also be operating on concurrently.
  740.  
  741.                If you do no explicit specification of parallel regions, use
  742.                of the --ssttddiioo option is safe.
  743.  
  744.      --ssuu==<_l_i_s_t>
  745.                Long name:  --ssuupppprreessss==<_l_i_s_t>
  746.                Default value:  nnoo mmeessssaaggee ssuupppprreessssiioonn
  747.  
  748.                The --ssuupppprreessss option tells ppccaa to disable the printing of
  749.                individual classes of messages.  These message classes range
  750.                from syntax warning and error messages to messages about the
  751.                optimizations performed.
  752.  
  753.                The following codes can be specified with the --ssuupppprreessss
  754.                option:
  755.  
  756.  
  757.                dd    Data dependence messages.
  758.  
  759.                ee    Syntax error messages.
  760.  
  761.                ii    Informational messages.
  762.  
  763.                nn    "Not optimized" messages.
  764.  
  765.                qq    Questions.
  766.  
  767.                ss    Standardized messages.
  768.  
  769.                ww    Syntax warning messages.
  770.  
  771.      --ssyy==<_l_i_s_t>
  772.                Long name:  --ssyynnttaaxx==<_l_i_s_t>
  773.                Default value:  --ssyynnttaaxx==aa
  774.  
  775.                The --ssyynnttaaxx option tells ppccaa to check for compliance with
  776.                certain syntactic rules.
  777.  
  778.                The --ssyynnttaaxx options are:
  779.  
  780.  
  781.                aa    Check for compliance with the SGI-extended Ansi C
  782.                     standard.
  783.  
  784.                kk    Check for compliance with the SGI-enhanced Kernighan &
  785.                     Richie C specification.
  786.  
  787.      --uurr==<_i_n_t_e_g_e_r>
  788.                Long name:  --uunnrroollll==<_i_n_t_e_g_e_r>
  789.                Default value:  --uunnrroollll==44
  790.  
  791.      --uurr22==<_i_n_t_e_g_e_r>
  792.                Long name:  --uunnrroollll22==<_i_n_t_e_g_e_r>
  793.                Default value:  --uunnrroollll22==110000
  794.  
  795.      --uurr33==<_i_n_t_e_g_e_r>
  796.                Long name:  --uunnrroollll33==<_i_n_t_e_g_e_r>
  797.                Default value:  --uunnrroollll33==11
  798.  
  799.                The --uunnrroollll, --uunnrroollll22, and --uunnrroollll33 options control how ppccaa
  800.                unrolls inner loops.  The value of the --ssccaallaarrooppttiimmiizzee
  801.                option must be at least 2 in order for unrolling to be
  802.                performed.  The unrolling that ppccaa performs is also subject
  803.                to the following constraints imposed by these three options:
  804.  
  805.  
  806.                * The number of times a loop is unrolled will not be larger
  807.                  than the value given by the --uunnrroollll option.  If the value
  808.                  given is zero, the default value is used instead.
  809.  
  810.                * The work done by the loop body is estimated by counting
  811.                  operands and operators.  This estimate of the amount of
  812.                  work done by the unrolled loop body must be less than the
  813.                  value of the --uunnrroollll22 option and greater than the value of
  814.                  the --uunnrroollll33 option.
  815.  
  816.                The reason for the --uunnrroollll and --uunnrroollll22 options is that
  817.                beyond a certain point, further unrolling of a loop, while
  818.                continuing to increase code size, brings diminishing returns
  819.                in performance since the work being done in the loop body is
  820.                already large compared to the overhead associated with a
  821.                loop iteration, which unrolling is attempting to amortize.
  822.                The reason for the --uunnrroollll33 option is to prevent unrolling
  823.                of very small loops which might be better unrolled or
  824.                software-pipelined by the C compiler.  Since these compiler
  825.                optimizations are not on by default, the default value for
  826.                this option is 1.  If you would like to take advantage of
  827.                these C compiler capabilities, you should set this option to
  828.                a higher value.
  829.  
  830.                If the constraints imposed by the option values cannot be
  831.                met for a given loop, then it will not be unrolled.  If they
  832.                can be met, then the largest degree of unrolling that
  833.                satisfies the constraints will be used.
  834.  
  835.      --vvoollaattiillee
  836.                No short name.
  837.                Default value:  ooffff
  838.  
  839.                The --vvoollaattiillee option indicates that all variables are
  840.                implicitly volatile.  Use of this option severely limits the
  841.                optimization that can be done.
  842.  
  843.      --[[nn]]6644
  844.                Long name:  --[[nnoo]]6644
  845.                Default value:  ooffff
  846.  
  847.                This option tells ppccaa that the code is being compiled for a
  848.                64-bit machine.  This affects the size of certain C data
  849.                types.
  850.  
  851. FFIILLEESS
  852.      //uussrr//lliibb//ppccaa
  853.           The pca program
  854.  
  855.      //uussrr//lliibb6644//ccmmppllrrss//ppccaa
  856.           (32-bit and 64-bit versions)
  857.  
  858.      ffiillee..cc
  859.           C source file
  860.  
  861.      ffiillee..mm
  862.           C transformed file
  863.  
  864.      ffiillee..llsstt
  865.           listing file
  866.  
  867.      //uussrr//lliibb//lliibbkkaappiioo..aa
  868.           Optimized I/O library (for --ssttddiioo option)
  869.  
  870.      //uussrr//lliibb6644//mmiippss33//lliibbkkaappiioo..aa
  871.           (mmiippss11, mmiippss33, and mmiippss44 versions)
  872.  
  873.      //uussrr//lliibb6644//mmiippss44//lliibbkkaappiioo..aa
  874.  
  875. SSEEEE AALLSSOO
  876.      cccc(1), ccpppp(1), mmppcc(1)
  877.      _I_R_I_S _P_o_w_e_r _C _U_s_e_r'_s _G_u_i_d_e
  878.      _I_R_I_S _P_o_w_e_r _C _Q_u_i_c_k _R_e_f_e_r_e_n_c_e
  879.      _P_a_r_a_l_l_e_l _P_r_o_g_r_a_m_m_i_n_g _o_n _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _C_o_m_p_u_t_e_r _S_y_s_t_e_m_s
  880.      _P_r_a_c_t_i_c_a_l _P_a_r_a_l_l_e_l _P_r_o_g_r_a_m_m_i_n_g by Dr. Barr Bauer, Academic Press,
  881.      1991.
  882.      _I_n_t_r_o_d_u_c_t_i_o_n _t_o _P_a_r_a_l_l_e_l _P_r_o_g_r_a_m_m_i_n_g by Steven Brawer, Academic Press,
  883.      1989.
  884.  
  885.      This man page is available only online.
  886.